package leetcode_day._2021._202112._2131;

/**
 * @author yzh
 * @version 1.0
 * @date 2021/12/31 9:35
 * 完美数
 * 对于一个 正整数，如果它和除了它自身以外的所有 正因子 之和相等，我们称它为 「完美数」。
 * 给定一个 整数 n， 如果是完美数，返回 true，否则返回 false
 * 算法：数学
 * 可以使用 num / i 代替 Math.sqrt(num), 防止调用 sqrt 溢出
 */
public class _31_507 {

    public boolean checkPerfectNumber(int num) {
        if (num <= 1) return false;
        int cnt = 1;
        for (int i = 2; i <= num / i; i++) if (num % i == 0) cnt += i + num / i;
        return cnt == num;
    }

}
